In [1]:
%pylab inline
import matplotlib.pyplot as plt
from scipy.integrate import * # az integráló rutinok betöltése
Populating the interactive namespace from numpy and matplotlib

Single-electron tunneling in SIN and SIS junctions.

I-V curve of superconductor–insulator–normal junctions

See Chapter 34.6, and Eq. (34.6.16) and Fig. 34.17. in Jenő Sólyom: Fundamentals of the Physics of Solids, Volume 3: Normal, Broken-Symmetry, and Correlated Systems (A modern szilárdtestfizika alpajai I. A szilárd testek szerkezete és dinamikája) see here.

I-V curve of superconductor–insulator–superconductor junctions

See Chapter 34.6, and Eq. (34.6.44) and Fig. 34.21. in Jenő Sólyom's book

In [2]:
# Az abra kimentesehez az alabbiakat a plt.show()  ele kell tenni!!! 

#savefig('fig_rainbow_p2_1ray.pdf');  # Abra kimentese
#savefig('fig_rainbow_p2_1ray.eps');  # Abra kimentese

# Abra es fontmeretek
xfig_meret= 8   #    12 nagy abrahoz
yfig_meret= 6    #   12 nagy abrahoz
xyticks_meret= 15  #  20 nagy abrahoz
xylabel_meret= 21  #  30 nagy abrahoz
legend_meret= 21   #  30 nagy abrahoz
In [3]:
def Fermi_Dirac(x,t):
    # Herer the chemical potential is zero!!!!
    return(1/(exp(x/t)+1))

def kivagas(x,x0):
    tmp=piecewise(x, [x < x0, x >= x0], [0, 1])+piecewise(x, [x < -x0, x >= -x0], [1, 0])
    return(tmp)

def current_SN_mag(x,ev,DL,t):
    
    if (abs(x) > DL):
        tmp = abs(x)/sqrt(x**2-DL**2)*(Fermi_Dirac(x,t)-Fermi_Dirac(x+ev,t))             
    else:
        tmp = 0
    
    return(tmp)

def current_SNS_mag(x,ev,DL,DR,t):
    
    if (abs(x) > DL and abs(x+ev) > DR):
        tmp = abs(x)/sqrt(x**2-DL**2)*abs(x+ev)/sqrt((x+ev)**2-DR**2)*(Fermi_Dirac(x,t)-Fermi_Dirac(x+ev,t))             
    else:
        tmp = 0
    
    return(tmp)

def current_SN(ev,DL,t):
    tmp = quad(current_SN_mag,-xm,xm,args=(ev,DL,t))[0]
    return tmp


def current_SNS(ev,DL,DR,t):
    tmp = quad(current_SNS_mag,-xm,xm,args=(ev,DL,DR,t))[0]
    return tmp
In [4]:
def ff(x,*params):
    y=0
    for i in range(len(params)):
        y=y+params[i]*x**i
    return y

I-V for SN

see Eq. (34.6.16) and Fig. 34.17. in Jenő Sólyom's book

In [5]:
xm=200

t = 0.25
DL = 3.0

evmax = 1.25*(DL)

xx = []
yy = []
for ev in linspace(0,evmax,500):
    xx.append(ev)
    yy.append(current_SN(ev,DL,t))
#yy=array(yy)    


figsize(xfig_meret,xfig_meret)
plot(xx,yy);

axvline(x= DL, color='k', linestyle='--')


xlabel(r'$e V$',fontsize=20)
ylabel(r'$I$',fontsize=20)

cim="I-V for SN," + r'$\quad T = $' + str(t) + r'$\quad \Delta_L= $' +str(DL)
title(cim,fontsize=20)

#ylim(0,1)
grid();
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py:3: RuntimeWarning: overflow encountered in exp
  app.launch_new_instance()
/usr/local/lib/python3.4/dist-packages/scipy/integrate/quadpack.py:352: IntegrationWarning: The maximum number of subdivisions (50) has been achieved.
  If increasing the limit yields no improvement it is advised to analyze 
  the integrand in order to determine the difficulties.  If the position of a 
  local difficulty can be determined (singularity, discontinuity) one will 
  probably gain from splitting up the interval and calling the integrator 
  on the subranges.  Perhaps a special-purpose integrator should be used.
  warnings.warn(msg, IntegrationWarning)
In [6]:
xm=100

DL = 3.0

tvec = [0.5,0.25,0.1]

#szin=['k','brown','g','b','r']
szin=['k','b','r']

evmax = 1.5*(DL)

figsize(xfig_meret,xfig_meret)

for j in range(len(tvec)):
    xx = []
    yy = []

    for ev in linspace(0,evmax,100):
        xx.append(ev)
        yy.append(current_SN(ev,DL,tvec[j]))
    #yy=array(yy)    
    
    plot(xx,yy,label=r'$T = $'+str(tvec[j]),color=szin[j]);

    legend(loc='upper left',fontsize=legend_meret)
    

axvline(x= DL, color='k', linestyle='--')

xlabel(r'$e V$',fontsize=20)
ylabel(r'$I$',fontsize=20)

cim= "I-V for SN," + r'$\quad \Delta_L= $' +str(DL) 
title(cim,fontsize=20)

#ylim(0,1)
grid();
/usr/local/lib/python3.4/dist-packages/scipy/integrate/quadpack.py:352: IntegrationWarning: The maximum number of subdivisions (50) has been achieved.
  If increasing the limit yields no improvement it is advised to analyze 
  the integrand in order to determine the difficulties.  If the position of a 
  local difficulty can be determined (singularity, discontinuity) one will 
  probably gain from splitting up the interval and calling the integrator 
  on the subranges.  Perhaps a special-purpose integrator should be used.
  warnings.warn(msg, IntegrationWarning)
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py:3: RuntimeWarning: overflow encountered in exp
  app.launch_new_instance()

I-V for SNS

see Eq. (34.6.44) and Fig. 34.21. in Jenő Sólyom's book

In [7]:
xm=50

t = 1.5
DL = 2.
DR = 3.

#DL = 1.*t
#DR = 2.*t

print("|DL-DR| = ", abs(DR-DL))

print("DL+DR = ", DR+DL)

evmax = 1.25*(DL+DR)

xx = []
yy = []
for ev in linspace(0,evmax,500):
    xx.append(ev)
    yy.append(current_SNS(ev,DL,DR,t))
#yy=array(yy)    


figsize(xfig_meret,xfig_meret)
plot(xx,yy);

axvline(x=abs(DL-DR), color='k', linestyle='--')
axvline(x= DL+DR, color='k', linestyle='--')


xlabel(r'$e V$',fontsize=20)
ylabel(r'$I$',fontsize=20)

cim="I-V for SNS," + r'$\quad T = $' + str(t) + r'$\quad \Delta_L= $' +str(DL) + r'$\quad \Delta_R= $' + str(DR)
title(cim,fontsize=20)

#ylim(0,1)
grid();
|DL-DR| =  1.0
DL+DR =  5.0
/usr/local/lib/python3.4/dist-packages/scipy/integrate/quadpack.py:352: IntegrationWarning: The maximum number of subdivisions (50) has been achieved.
  If increasing the limit yields no improvement it is advised to analyze 
  the integrand in order to determine the difficulties.  If the position of a 
  local difficulty can be determined (singularity, discontinuity) one will 
  probably gain from splitting up the interval and calling the integrator 
  on the subranges.  Perhaps a special-purpose integrator should be used.
  warnings.warn(msg, IntegrationWarning)
In [8]:
xm=20

DL = 0.5
DR = 1.

tvec = [1,0.5,0.25]

#szin=['k','brown','g','b','r']
szin=['k','b','r']

evmax = 1.25*(DL+DR)

figsize(xfig_meret,xfig_meret)

for j in range(len(tvec)):
    xx = []
    yy = []

    for ev in linspace(0,evmax,200):
        xx.append(ev)
        yy.append(current_SNS(ev,DL,DR,tvec[j]))
    #yy=array(yy)    
    
    plot(xx,yy,label=r'$T = $'+str(tvec[j]),color=szin[j]);

    legend(loc='upper left',fontsize=legend_meret)
    

axvline(x=abs(DL-DR), color='k', linestyle='--')
axvline(x= DL+DR, color='k', linestyle='--')

xlabel(r'$e V$',fontsize=20)
ylabel(r'$I$',fontsize=20)

cim= "I-V for SNS," +r'$\quad \Delta_L= $' +str(DL) + r'$\quad \Delta_R= $' + str(DR)
title(cim,fontsize=20)

#ylim(0,1)
grid();
/usr/local/lib/python3.4/dist-packages/scipy/integrate/quadpack.py:352: IntegrationWarning: The maximum number of subdivisions (50) has been achieved.
  If increasing the limit yields no improvement it is advised to analyze 
  the integrand in order to determine the difficulties.  If the position of a 
  local difficulty can be determined (singularity, discontinuity) one will 
  probably gain from splitting up the interval and calling the integrator 
  on the subranges.  Perhaps a special-purpose integrator should be used.
  warnings.warn(msg, IntegrationWarning)
In [ ]: